package com.lgl.maker.generator.file;

import cn.hutool.core.io.FileUtil;
import com.lgl.maker.model.MainTemplateModel;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.*;
import java.nio.charset.StandardCharsets;

/**
 * @author 良哥
 * @verison FileGenerator.java.ftl.0
 */

public class DynamicGenerator {

    public static void main(String[] args) throws TemplateException, IOException {
//
//        String propertyPath = System.getProperty("user.dir");
//        String inputPath = propertyPath + "/code_generate_basic/src/main/resources/templates/MainTemplate.java.ftl";
//
//        String outputPath = propertyPath + "/code_generate_basic/MainTemplate.java";
//
//        MainTemplateModel model = new MainTemplateModel();
//        model.setAuthor("六公1里");
//        model.setIsLoop(false);
//
//
//        System.out.println(inputPath);
//        System.out.println(outputPath);
//        doGen(inputPath, outputPath, model);
    }

    public static void doGen(String inputPath, String outputPath, Object model) throws IOException, TemplateException {

        // new 出 Configuration 对象，参数为 FreeMarker 版本号
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_32);

        // 文件不存在则创建文件和父目录
        if (!FileUtil.exist(outputPath)) {
            FileUtil.touch(outputPath);
        }

        // 指定模板文件所在的路径
        File templateDir = new File(inputPath).getParentFile();
        configuration.setDirectoryForTemplateLoading (templateDir);

        // 设置模板文件使用的字符集
        configuration.setDefaultEncoding("utf-8");

        // 创建模板对象，加载指定模板
        String templateName = new File(inputPath).getName();
        Template template = configuration.getTemplate(templateName);

        Writer outer = new OutputStreamWriter(new FileOutputStream(outputPath), StandardCharsets.UTF_8);
        template.process(model, outer);

        // 生成文件后别忘了关闭哦
        outer.close();
    }
}
